package com.mz.mattress.client.util;

import java.text.SimpleDateFormat;
import java.util.*;

public class RandomTimeGenerator {


    /**
     * 生成随机时间列表（按从早到晚排序）
     * @param start 开始时间
     * @param end 结束时间
     * @param count 要生成的时间数量
     * @return 排序后的时间字符串列表
     */
    public static List<String> generateSortedRandomTimes(Date start, Date end, int count) {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        List<Date> dates = new ArrayList<>();
        Random random = new Random();

        // 生成随机时间
        long startMillis = start.getTime();
        long endMillis = end.getTime();
        for (int i = 0; i < count; i++) {
            long randomMillis = startMillis + (long)(random.nextDouble() * (endMillis - startMillis));
            dates.add(new Date(randomMillis));
        }

        // 按时间从早到晚排序
        Collections.sort(dates, new Comparator<Date>() {
            @Override
            public int compare(Date d1, Date d2) {
                return d1.compareTo(d2);
            }
        });

        // 转换为格式化字符串
        List<String> result = new ArrayList<>();
        for (Date date : dates) {
            result.add(sdf.format(date));
        }

        return result;
    }

    public static void main(String[] args) throws Exception {
        // 设置时间范围（这里设置为过去10年到当前时间）
        Calendar calendar = Calendar.getInstance();
        Date end = calendar.getTime(); // 当前时间
        calendar.add(Calendar.YEAR, -10); // 10年前
        Date start = calendar.getTime();

        // 生成10个按时间排序的随机时间
        List<String> sortedTimes = generateSortedRandomTimes(start, end, 10);

        // 输出结果
        System.out.println("按时间从早到晚排序的随机时间：");
        for (String time : sortedTimes) {
            System.out.println(time);
        }
    }


    /**
     * 生成随机时间
     * @param start 开始时间
     * @param end   结束时间
     * @return 随机时间
     */
    public static Date randomDate(Date start, Date end) {
        Random random = new Random();
        long startMillis = start.getTime();
        long endMillis = end.getTime();
        long randomMillis = startMillis + (long) (random.nextDouble() * (endMillis - startMillis));
        return new Date(randomMillis);
    }

    /**
     * 生成随机时间字符串
     * @param start 开始时间
     * @param end   结束时间
     * @return 格式化的时间字符串 "yyyy-MM-dd HH:mm:ss"
     */
    public static String randomDateString(Date start, Date end) {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        Date randomDate = randomDate(start, end);
        return sdf.format(randomDate);
    }

//    public static void main(String[] args) {
//
//        // 设置时间范围（这里设置为过去10年到当前时间）
//        Calendar calendar = Calendar.getInstance();
//        Date end = calendar.getTime(); // 当前时间
//        calendar.add(Calendar.YEAR, -1); // 10年前
//        Date start = calendar.getTime();
//
//        // 生成10个随机时间示例
//        for (int i = 0; i < 10; i++) {
//            String randomTime = randomDateString(start, end);
//            System.out.println(randomTime);
//        }
//    }
}
